Load balancing in link aggregation and trunking

ABSTRACT

A communications network switch includes a plurality of network ports for transmitting and receiving packets to and from network nodes via network links, each of the packets having a destination address and a source address, the switch being operative to communicate with at least one trunking network device via at least one trunk formed by a plurality of aggregated network links. The communications network switch provides a method and apparatus for balancing the loading of aggregated network links of the trunk, thereby increasing the data transmission rate through the trunk. The switch includes: a packet buffer for temporarily storing a packet received at a source port of the network ports, the packet having a source address value, and a destination address value indicating a destination node that is communicatively coupled with the switch via a data path including a trunk; a packet routing unit for determining a destination trunked port associated with the packet, the destination trunked port including a subset of the plurality of network ports, the destination trunked port being coupled to the destination node via the data path; and load balancing unit for selecting a destination port associated with the packet from the subset of network ports; whereby transmission loading of the aggregated network links of the trunk is balanced. In varying embodiments, the load balancing unit is operative to select destination ports from the subsets of network ports as a function of source port ID values, source addresses, and destination addresses.

CROSS REFERENCE TO RELATED APPLICATIONS

This is a Continuation of application Ser. No. 09/249,837, now U.S. Pat.No. 6,363,077, filed Feb. 12, 1999. The disclosure of the priorapplication is hereby incorporated by reference herein in its entirety.

This application claims priority to U.S. Patent Application Serial No.60/074,740, filed Feb. 13, 1998, entitled “Methods For Load Balancing InLink Aggregation And Trunking”, which is incorporated herein byreference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to computer network systems.More specifically, the present invention relates to a method andapparatus for balancing the loading of network links of a trunked link.

2. Description of the Prior Art

Personal computers and engineering workstations are commonlyinter-coupled into local area networks (LANs) that allow messages to besent and programs to be downloaded, e.g., from file servers on the LAN.The ETHERNET, originally a joint effort of Intel, Xerox and DigitalEquipment Corporations, is an example of a shared-access LAN now inwidespread use. The ETHERNET was originally conceived as a ten megabitper second (Mbps) network that allowed every node on the LAN to transmitand receive.

Faster engineering workstations and distributed file systems haveseriously increased the traffic placed on ordinary LANs. Many variationsin ETHERNET have been developed. Different kinds of ETHERNET arereferred to as “10BASE-T”, “10BASE-2”, “10BASE-5”, “100BASE-VG”, and“100BASE-X”. Different speeds include ten Mbps, twenty Mbps, one hundredMbps, and beyond. The ETHERNET 100 BaseFX specification definestransmission over fiber optic cable. 1 Gbit per second EHERNET

Servers are typically at the focus of network activity and are oftensubjected to parallel access requests from clients which have the samedata transfer speed limitations as the server itself.

High performance computers are becoming affordable for use inapplications including computing resources, high-performance fileservers, and visualization workstations. However, the LANs that are nowin use do not provide the capacity that is needed to support thesehigher performance computers. While bandwidths in the 10-100 Mbps rangeare sufficient for many applications, the more demanding computing andvisualization applications require gigabit-per-second (Gbps) datatransfer rates. Such applications include high-quality videoapplications, live video links, and meeting-support systems. Some ofthese applications, such as real-time video, will place a morecontinuous load on the network and require one-to-many (“multicasting”)transmission in addition to point—point (“unicast”) links. Therefore, areasonable assumption is that LANs may soon require aggregate bandwidthsin the 1040 Gbps range for supporting a more or less ordinary communityof users simultaneously. Different user communities typically havedifferent needs, and the requirements of any given user communitygenerally expand over time, so there is a need for a high performanceLAN that scales gracefully and economically to satisfy the requirementsof its user community.

ETHERNET switching provides for the connection of multiple ETHERNET LANsto a central switch. Within the ETHERNET switch, circuit switchingallows the simultaneous transport of multiple packets across the switch.

What is needed is a local network switch including a plurality ofnetwork ports for transmitting and receiving packets to and from networknodes via network links, each of the packets having a destinationaddress and a source address, the switch being operative to communicatewith at least one trunking network device via at least one trunk formedby a plurality of aggregated network links.

SUMMARY OF THE INVENTION

It is an object of the present invention to provide a method anapparatus for load balancing in trunked links.

Briefly, a presently preferred embodiment of the present inventionincludes a local area network switch including a plurality of networkports for transmitting and receiving packets to and from network nodesvia network links, each of the packets having a destination address anda source address, the switch being operative to communicate with atleast one trunking network device via at least one trunk formed by aplurality of aggregated network links. The present invention provides amethod and apparatus for balancing the loading of the aggregated networklinks of the trunk, thereby increasing the data transmission ratethrough the trunk.

The switch includes: a packet buffer for temporarily storing a packetreceived at a source port of the network ports, the packet having asource address value, and a destination address value indicating adestination node that is communicatively coupled with the switch via adata path including a trunk; a packet routing unit for determining adestination trunked port associated with the packet, the destinationtrunked port including a subset of the plurality of network ports, thedestination trunked port being coupled to the destination node via thedata path; and a load balancing unit for selecting a destination portassociated with the packet from the subset of network ports; wherebytransmission loading of the aggregated network links of the trunk isbalanced.

In a port-based load balancing embodiment of the present invention, theload balancing unit is responsive to a source port ID value indicatingthe source port, and is operative to select the destination port as afunction of the source port ID value.

In accordance with a first MAC address based load balancing embodimentof the present invention, the load balancing unit is responsive to thesource address value of the packet, and is operative to select thedestination port as a function of the source address value. Inaccordance with a second MAC address based load balancing embodiment,the load balancing unit is responsive to the corresponding source anddestination address values of the packet, and is operative to select thedestination port as a function of the source and destination addressvalues.

An important advantage of a switch according to the present invention isthat it provides a method and apparatus for balancing the loading ofaggregated network links of a trunk connected to the switch, therebyincreasing the data transmission rate through the trunk.

The foregoing and other objects, features, and advantages of the presentinvention will be apparent from the following detailed description ofthe preferred embodiment which makes reference to the several figures ofthe drawing.

IN THE DRAWING

FIG. 1 is a schematic block diagram of an exemplary network systemhaving a packet switch providing load balancing for a trunked linkcoupled between the switch and other network devices in accordance withthe present invention;

FIG. 2 is a schematic block diagram of one embodiment of the packetswitch of FIG. 1, the switch including a system administration unit, anda plurality of switching devices each providing load balancing functionsin accordance with the present invention;

FIG. 3A is a detailed schematic circuit block diagram of a switchingdevice of the packet switch of FIG. 2, the switching device including anaddress resolution circuit, a packet routing table, and a trunk portconfiguration unit in accordance with the present invention;

FIG. 3B is a detailed schematic circuit block diagram of an alternativeembodiment of the switching device of FIG. 3A wherein the device isresponsive to a local system administrator;

FIG. 4A is a generalized block diagram illustrating the structure andcontents of the packet routing table of FIGS. 3A and 3B, the table beingaddressable via destination addresses of received packets and providingdestination port ID values associated with the received packets;

FIG. 4B is a block diagram illustrating the format of a regularnon-trunking destination port ID value,

FIG. 4C is a block diagram illustrating the format of trunkeddestination port ID value,

FIG. 5 is a detailed block diagram illustrating details of the trunkport configuration unit and address resolution circuit of one of theswitching devices in accordance with a port based trunked link loadbalancing scheme of the present invention;

FIG. 6 is a detailed block diagram of a destination trunk port registerof the trunk port configuration unit of FIG. 5;

FIG. 7 is a block diagram of one embodiment of the address resolutioncircuit of FIGS. 3A and 3B in accordance with a first MAC address basedtrunked link load balancing scheme in accordance with the presentinvention; and

FIG. 8 is a block diagram of an embodiment of the address resolutioncircuit of FIGS. 3A and 3B in accordance with a second MAC address basedtrunked link load balancing scheme in accordance with the presentinvention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present invention overcomes the problems associated with the priorart by providing a method and apparatus for load balancing in trunkingand link aggregation. In the following description, numerous specificdetails are set forth (e.g., a specific format for a trunked port IDvalue in a packet switch having a predefined number of ports) in orderto provide a thorough understanding of the invention. Those skilled inthe art will recognize, however, that the invention may be practicedapart from these specific details. In other instances, well knowndetails of circuits (e.g., ETHERNET protocol) have been omitted, so asnot to unnecessarily obscure the present invention.

FIG. 1 shows a schematic block diagram at 2 of an exemplary local areanetwork system employing methods and apparatus for load balancing intrunking and link aggregation in accordance with the present invention.The network system 2 includes: a high speed server 3 having a pluralityof network ports 4 for transmitting and receiving data packets viacorresponding network links; a plurality of clients 5 each having atleast one network port 6 for transmitting and receiving data packets toand from device including the server 3 via corresponding network datastreams; a packet switch 7 having a plurality of client network ports 8for transmitting and receiving data packets to and from correspondingones of the clients 5 via corresponding network links, and a pluralityof network ports 9; and a packet switch 10 providing load balancing fortrunked, or aggregated, links in accordance with the present inventionas further explained below.

In the depicted embodiment, the local area network system 2 includes sixof the clients 5 designated CLIENT_(—)1, CLIENT_(—)2, CLIENT_(—)3,CLIENT_(—)4, CLIENT_(—)6, and CLIENT_(—)6. Each of the clients 5 may bea computer work station, any type of peripheral device connected withthe switch 7 via an ETHERNET link (e.g., a printer), or any other typeof network node.

The packet switch 10 includes four sets of eight network ports 14designated (A₀, A₁, . . . , A₇), (B₀, B₁, . . . , B₇), (C₀, C₁, . . . ,C₇) and (D₀, D₁, . . . , D₇) respectively for transmitting and receivingdata packets via corresponding network links 15. In one embodiment ofthe present invention, the local area network 2 operates in accordancewith ETHERNET, and each of the network links 15 is an ETHERNET linkwhich transmits and receives packets of information in accordance withETHERNET protocol.

The packet switch 10 includes means for link aggregation and trunkingwherein a plurality of trunked links 17 are formed by aggregating setsof four of the network links 15 as further explained below. In oneembodiment, the packet switch 10 may include a maximum of eight trunkedports designated P₀, P₁, P₂, P₃, P₄, P₅, P₆, and P₇ formed byaggregating ports A₀-A₃, ports A₄-A₇, ports B₀-B₃, ports B₄-B₇, portsC₀-C₃, and ports C₄-C₇, ports D₀-D₃, and ports D₄-D₇ respectively. Inthe depicted embodiment, the packet switch 10 includes seven trunkedports designated P₀, P₁, P₂, P₃, P₄, P₅, and P₇ wherein ports C₀-C₃ arenot trunked. Port C₀ is shown to be coupled to a CLIENT_(—)7 via one ofthe regular non-trunking network links 15. The eight trunked ports P₀,P₁, P₂, P₃, P₄, P₅, and P₇ are respectively coupled to eight trunkedlinks designated T₀, T₁, T₂, T₃, T₄, T₅, and T₇. In varying embodimentsof the present invention, switch 10 may include any integer number ofports 14, and trunked ports and trunked links may be formed byaggregating any integer number of ports 14 and links 15.

In one embodiment, each of the network links 15 has a bandwidth of 100Megabits per second (100 Mbps), and each of the trunked links 17provides a bandwidth 400 Mbps. Switch 7 may be implemented by any typeof switch having trunking capability. The high speed server 3 includes anetwork interface card (not shown) providing for trunked linkcommunication via the trunked link T₃.

Each of the server 3, and clients 5 has media access control information(MAC information) associated therewith including a destination MACaddress and a source MAC address of the ETHERNET network. Each of theinformation packets communicated in the communications network include adestination address and a source address.

Each of the plurality of clients 5 communicates with the server 3 viathe network links and the switches 7 and 10. Because traffic is heavybetween the server 3 and the plurality of clients 5, it is desirable toprovide a communication link having a maximized bandwidth between theclients S and server 3. In the depicted embodiment, the ports B₄-B₇ ofswitch 10 are respectively connected to the ports 4 designated S₀-S₃ ofthe server 3 via the trunked link T₃, and the ports D₄-D₇ of switch 10are respectively connected to the ports 9 designated SW₀-SW₃ of theswitch 7 via the trunked link T₆ Data streams are provided between theserver 3 and the plurality of clients 5 via the trunked link T₃, switch10, trunked link T₆, and switch 7.

Upon receiving a packet from a source device (e.g., the server 3 or oneof the clients) at a source port, the switch 10 must provide for:determining a destination port associated with the received packet; andif the destination port is one of the trunked ports P of the switch, theswitch 10 must also provide for selecting a particular destination port14 from the plurality of ports 14 of the destination trunked port P.

In accordance with the present invention, the switch 10 includes a loadbalanced trunked link port mapping system 168 which is depictedgenerally in FIG. 1 and which is further explained below. The system 168generally includes: a packet buffer 170 coupled to receive packets fromnetwork nodes via the ports 14 and the trunking ports P; a packetrouting unit 180 coupled with the buffer 170 for receiving packet headerinformation including a source MAC address and a destination MAC addressof each packet received by the switch, and for determining a destinationport ID value associated with each received packet wherein thedestination port ID value indicates a corresponding one of either theregular non-trunking ports 14 or one of the trunking ports P; and a loadbalancing unit 190 coupled with the packet buffer 170 and routing unit180 and providing for selecting a one of the ports 14 of a destinationtrunking port P if the destination port ID value indicates one of thetrunking ports for a received packet.

For example, consider that a first packet is received from CLIENT_(—)7at port C₀ and the destination address of the first packet indicates thehigh speed server 3. The packet routing unit 180 generates a destinationport ID value indicating trunked port P₃ as the destination portassociated with the first packet. The load balancing unit 190 thenselects a destination port from ports B₄-B₇ of the trunked destinationport P₃. As another example, consider that a second packet is receivedfrom CLIENT_(—)5 at port D₀, and the destination address of the secondpacket indicates the high speed server 3. The packet routing unit 180generates a destination port ID value indicating trunked port P₃ as thedestination port associated with the second packet. The load balancingunit 190 then selects a destination port from ports B₄-B₇ of the trunkeddestination port P₃. As a further example, consider that a third packetis received from the high speed server at port B₄, and the destinationaddress of the third packet indicates CLIENT_(—)1. In this case, thepacket routing unit 180 generates a destination port ID value indicatingtrunked port P₆ as the destination trunked port associated with thethird packet, and the load balancing unit 190 selects a destination portfrom ports D₄-D₇ of the trunked destination port P₆.

In accordance with the present invention, the load balancing unit 190implements a trunked link load balancing scheme. The loading of each ofthe network links 15 of each of the trunked links 17 is proportional tothe number of packets transmitted to the particular link, and isdetermined in accordance with the type of load balancing schemeimplemented by the load balancing unit 190. In ETHERNET, it is requiredthat the ordering of packets communicated between a particular sourceand its associated destination be maintained. For a givensource-destination data stream providing communication between a sourceand its associated destination, the ordering of transmitted packets ismaintained if the source-destination data stream is implemented over anon-varying physical data path. Therefore, it is not practical toimplement a mapping scheme in the switch 10 between ports of a receivingtrunked port and ports of a transmitting trunked port wherein packetsreceived via the receiving trunked port are provided to and transmittedfrom the first available port of the receiving trunked port.

In accordance with a port-based load balancing scheme, further describedbelow, a destination port selected for a particular packet received at aparticular source port is determined in accordance with a port-basedstatic programmed mapping scheme. As an example, packets received atsource ports B₄-B₇ may be programmed to be provided to and transmittedfrom corresponding destination ports D₄-D₇ respectively. As anotherexample, packets received at source ports B₅, B₆, B₇, and B₄ may beprogrammed to be provided to and transmitted from correspondingdestination ports D₆, D₄, D₅, and D₇ respectively. In the port basedload balancing scheme, the destination port for a particular packet(selected from the plurality of ports of a corresponding destinationtrunked link) is determined based on the source port at which the packethas been received.

In accordance with a first MAC address table based load balancingscheme, further described below, the load balancing unit 190 implementsa dynamic trunked port mapping scheme wherein the destination port for aparticular packet (selected from the plurality of ports of itscorresponding destination trunked link) is determined based on thesource address of the packet.

In accordance with a second MAC address table based load balancingscheme, further described below, the load balancing unit 190 implementsa dynamic trunked port mapping scheme wherein the destination port for aparticular packet (selected from the plurality of ports of thedestination trunked link associated with the particular packet) isdetermined based on the MAC source address and the MAC destinationaddress of the packet.

FIG. 2 shows a schematic block diagram at 10 of one embodiment of thepacket switch 10 (FIG. 1) implemented as a packet switching fabricincluding means for load balancing for link aggregation and trunking(not shown) according to the present invention as further explainedbelow. Although the load balanced trunked link port mapping system 168(FIG. 1) is shown as implemented in a packet switching fabric having aring topology, it will be apparent to those skilled in the art that theload balanced trunked link port mapping methods of the present inventionmay be implemented in a packet switch having any type of topologyincluding a bus, a token ring, and a cross bar switch. Therefore, thetrunked link load balancing methods and apparatus of the presentinvention should not be construed as limited to use in a packetswitching fabric having a ring topology.

The switching fabric 10 includes four switching devices 12, designatedSWITCH_A, SWITCH_B, SWITCH_C, and SWITCH_D, having the network ports 14designated (A₀, A₁, . . . , A₇), (B₀, B₁, . . . , B₇), (C₀, C₁, . . . ,C₇) and (D₀, D₁, . . . , D₇) respectively for transmitting and receivingdata packets via the corresponding ETHERNET links 15; a data ring inputport 16 connected to receive data and data ring messages from anupstream device via a corresponding one of a plurality of 33-bit dataring segments 18; a data ring output port 20 connected to transmit dataand data ring messages to a corresponding downstream device via acorresponding one of the data ring segments 18; a control ring inputport 22 connected to receive control ring messages which includeresource reservation protocol messages from the corresponding upstreamdevice via a corresponding one of a plurality of control ring segments24; and a control ring output port 26 connected to transmit control ringmessages to the corresponding downstream device via a corresponding oneof the control ring segments 24.

The switching fabric includes means for link aggregation and trunkingwherein each of the switching devices 12 includes two selectable trunkedports each formed by aggregating four of the network ports 14 as furtherexplained below. SWITCH_A includes two selectable trunked portsdesignated P₀ and P₁ which are formed by aggregating ports A₀-A₃, andports A₄-A₇ respectively. SWITCH_(—B) includes two selectable trunkedports designated P₂ and P₃ which are formed by aggregating ports B₀-B₃,and ports B₄-B₇ respectively. SWITCH_C includes two selectable trunkedports designated P₄ and P₅ which are formed by aggregating ports C₀-C₃,and ports C₄-C₇ respectively. SWITCH_D includes two selectable trunkedports designated P₆ and P₇ which are formed by aggregating ports D₀-D₃,and ports D₄-D₇ respectively. Trunked ports P₀-P₇ are coupled to trunkedlinks T₀-T₇ respectively.

The packet switching fabric 10 also includes: a dedicated ringmanagement device 42 having a data ring input port 44 connected toreceive data and data ring messages from the corresponding upstreamdevice, SWITCH_D, via a corresponding one of the data ring segments 18,a data ring output port 46 connected to transmit data and data ringmessages to the corresponding downstream device, SWITCH_A, via acorresponding one of the data ring segments, a control ring input port48 connected to receive control ring messages from the upstream devicevia a corresponding one of the control ring segments 24, and a controlring output port 46 for transmitting control ring messages to thedownstream device via a corresponding one of the control ring segments;and a central processing unit (CPU) 52 having a port 54 connected to aport 56 of the management device 42 via a CPU link 57.

The CPU 52, which is included within the load balancing unit 190 (FIG.1), executes system administration software, and provides for portmapping in accordance with the port based load balancing embodiment. Asfurther explained below, each of the switching devices 12 includesapparatus for configuring the trunk ports T₀-T₇ of the packet switch 10.The system administrator provides trunk port configuration signals toeach of the switching devices 12 via the control ring 24 for the purposeof configuring the trunk ports T₀-T₇ of the packet switch 10.

FIG. 3A shows a detailed schematic circuit block diagram of componentsof one of the switching devices 12 of the packet switching fabric of 10(FIG. 2). Each of the switching devices includes a data ring processingsub-system, a network interface sub-system, and a control ringsub-system. The control ring sub-system of the switching device 12includes a control ring processing unit 70 having: an input port 72connected to receive control ring messages including resourcereservation protocol messages via control ring input port 22; an outputport 74 connected to provide the control ring messages to the controlring via the control ring output port 26; a bandwidth control port 76connected to provide channel bandwidth resource control signals to adata ring channel bandwidth resource means 78, and a packet bufferchannel bandwidth resource means 80 further explained below; and ports81, 82, and 84 further explained below.

The data ring processing sub-system of the switching device 12 includesa data ring processing unit 90 having: an input 92 connected to receivepacket data bursts from a corresponding upstream switching device 12(FIG. 2) via a corresponding data segment 18 and the data ring inputport 16; a data port 94 further explained below; a port 96 furtherexplained below; an output 98 connected to the data ring output port 20via the data ring channel bandwidth resource means 78, and a port 99further explained below.

The depicted switching device 12 further includes: a data distributioncontrol unit 102 having eight outputs 104, a port 105 coupled forcommunication with port 82 of the control ring processing unit 70, aport 106 connected to receive packet data bursts from output 94 of thedata ring processing unit 90, and a port 107 further explained below;and eight transmit buffer queues 108 each having an input 109 connectedto receive data from a corresponding one of the eight outputs 104 ofunit 102, and an output 110 connected to a corresponding one of eightnetwork output ports 112 designated (A₀′, A₁′, . . . , A₇′). The datadistribution control unit 102 also includes a multicast queue 114 havingan input 115 connected to port 107 of the control unit 102 as furtherexplained below.

The data distribution control unit 102 further includes a network outputport arbitration sub-system (not shown) for communicating with local andnon-local requesting agents competing for access to the eight networkoutput ports for the purpose of transmitting data packets to thenetwork. Details of the arbitration sub-system are described inApplicants' pending U.S. patent application (Serial Number not yetassigned) which claims priority to Applicants' U.S. Provisional PatentApplication Serial No. 60/073,861 filed Feb. 3, 1998, entitled “BitSlice Arbiter” which is incorporated herein by reference in itsentirety.

The control ring processing sub-system of the depicted switching device12 further includes: a trunk port configuration unit (TPC unit) 116having a port 117 coupled for communication with port 81 of the controlring processing unit 70, a port 118 coupled for communication with port99 of the data ring processing unit 90, and a port 119; and an inputqueuing control unit 120 having a queuing control logic unit 121.

The input queuing control unit 120 includes: a port 122 coupled to port119 of the trunk port configuration unit 116; a port 123 coupled to port107 of the data distribution control unit 102; a bus port 124; a controlport 126 connected to receive queuing enable signals from port 84 of thecontrol ring processing unit 70; a port 128 connected to port 96 of thedata ring processing unit 90; a packet buffer memory control port 130;and a data port 132.

The input queuing control unit 120 further includes: a packet routingtable (PRT) 134 providing packet routing information as furtherdescribed below, and having a port 135; and an address resolutioncircuit 136 having a port 137 coupled for communication with port 135 ofthe packet routing table (PRT) 134, and a port 138 coupled forcommunication with port 118 of the trunk port configuration unit 116. Inone embodiment, the trunk port configuration unit 116, and addressresolution circuit 136 implement the load balancing unit 190 (FIG. 1)and provide trunked link load balancing functions in accordance with thepresent invention as further explained below. Also, in one embodiment,the queuing control logic unit 121 and packet routing table 134implement the packet routing unit 180 (FIG. 1).

A network interface sub-system of the depicted switching device 12includes an internal first in-first out buffer (FIFO) 145 having anoutput 146 connected to provide data to input 134 of the control unit120, and an input 147; an external packet buffer 150 having a dataoutput 152 connected to input 147 of FIFO 145 via the packet bufferchannel bandwidth resource means 80 which is responsive to the channelbandwidth resource control signals provided by the control ringprocessing unit 70 to control the bandwidth resources of the 32 bit widecommunication path between output 152 of packet buffer 150 and input 147of the FIFO 145, a control port 154 connected to receive queuing controlsignals from the packet buffer memory control port 132 of the controlunit 120 and also providing data address pointer information to controlport 130 of the input queuing control unit, and an input 156 connectedto a bus 158 which is connected to bus port 124 of the control unit 120;and eight receive buffer queues 160 each having an output 162 connectedto provide data to the bus 158, and an input 164 connected to receivedata from a corresponding one of eight network input ports 166designated (A₀″, A₁″ , . . . , A₇″). The eight network input ports 166,and corresponding eight network output ports 112 designated (A₀″, A₁″ ,. . . , A₇′) are implemented by the eight network bidirectional ports 14designated (A₀, A₁, . . . , A₇) (FIG. 2). In one embodiment, each of thebuffer queues 108 and 160, and the packet buffer 160 implement thepacket buffering unit 170 (FIG. 1).

An ETHERNET frame, or packet of data, includes header informationspecifying a source address of a source end node, and a destinationaddress of a destination end node. When a data packet is received viaone of the network input ports 166, the data packet is initiallybuffered by the corresponding receive buffer queue 160. The control unit120, which is connected to bus 158 via port 124, receives headerinformation of the packet including its media access control information(MAC information) including a destination MAC address and a source MACaddress of the ETHERNET. Concurrently, the packet is transmitted to andstored in buffer 150. Upon storing the data packet, buffer 150 providespointer addresses to port 132 of the control unit 120 which includesqueuing structure storage registers for storing pointer addressescorresponding to each received data packet.

After the arbitration sub-system (not shown) grants access to the packetrouting table 134 for a data packet, the address resolution circuit 136reads the destination address included in the header information of thedata packet received via the network ports to determine a destinationport of the packet via the packet routing table 134 which provides IDcodes of the destination device and output port which is communicativelycoupled to the destination end node specified by the destinationaddress. The packet routing table 134 indicates to which network outputport 112 of which device 12 a particular packet must be forwarded toreach the end node indicated by the destination address specified by thepackets header. The address resolution circuit 136 reads the headerinformation of the data packet including the source address anddestination address, and performs a packet destination look up operationusing the destination address.

When a match is found in the packet routing table 134 for a destinationaddress specified by packet header information, it is then determinedwhether the destination address is connected to a network port of thereceiving device, or to a network port of another device of theswitching fabric 10 (FIG. 2). If the destination port is a local networkport 14 (FIG. 2) of the current receiving device, only a localtransaction must be processed. If the destination port is a network port14 (FIG. 2) of a device of the fabric other than the current receivingdevice, the data packet must be transferred from the current receivingdevice, or “source device”, to the destination device via the data ringby processing an interconnect transaction which requires resourcereservation performed using a resource reservation protocol.

The resource reservation protocol is used to set up source-destinationchannels for each interconnect transaction prior to beginning thetransfer of data from a source device to a destination device via asource-destination channel on the data ring. The resource reservationprotocol uses protocol control messages including a source requestmessage (SRC_REQ message), a get resource message (GET_RES message), anda destination grant message (DST_GRANT message).

To initiate an interconnect transaction, the control ring processingunit 70 of a source device develops a SRC_REQ message including a fieldcarrying the destination port ID code associated with the destinationport, determined by and received from the control unit 120. The controlring processing unit 70 transmits the SRC_REQ message to the destinationdevice via the control ring. When a destination device receives aSRC_REQ message from a source device via the control ring, the SRC_REQmessage is temporarily buffered. The control ring processing unit 70reads the SRC_REQ messages and provides corresponding request signals tothe network output port arbitration sub-system 116. Based on the sourceport and destination port indicated by the SRC_REQ message, theprocessing unit 70 provides a signal to the arbitration sub-system 116requesting access to the destination port on behalf of the source portas the requesting agent.

The control unit 120 is operative to access data packets a data burst ata time from the external packet buffer 150 in response to the queuingenable signal received at port 126 from the control ring processing unit70. Data packets are read out a burst at a time from the external packetbuffer 150 via multiple channels under control of the control unit 120.When the control ring processing unit 70 allocates sufficient externalpacket buffer channel bandwidth, the packet buffer begins transmittingpacket data bursts from output 178 of the buffer 150 to input 147 of theinternal FIFO 145 under control of the input queuing control unit 120.

For local transactions for which the destination port is a localinterconnect output port: if the source selected by the arbitrationprocess is the local multicast queue 110 of the data distributioncontrol unit 102, the packet at the head of the multicast queue istransferred to the appropriate one of the transmit buffer queues 106 fortransmission via the corresponding network output port 108; and if thesource selected by the arbitration process is one of the local receivebuffer queues 160, the control ring processing unit 70 sets up a channelto communicatively couple the external packet buffer 150 to theappropriate one of the transmit buffer queues 108 when the requestedpacket buffer channel bandwidth is available. In a local interconnecttransaction for which the destination port is the local multicast queue112, if the source selected is a local receive queue 160, the controlring processing unit 70 sets up a channel to communicatively couple theexternal packet buffer 150 to the multicast queue 110 when the requestedpacket buffer channel bandwidth is available.

Additional details of the packet switching fabric 10 are described inApplicants' pending U.S. patent application Ser. No. 09/092,350, filedJun. 5, 1998, entitled “Packet Switching Fabric Using A Segmented RingWith Resource Reservation Protocol”, which is incorporated herein byreference in its entirety. U.S. patent application Ser. No. 09/092,350claims the benefit of Applicants' earlier filed U.S. ProvisionalApplication Ser. No. 60/073,535, filed Feb. 3, 1998, entitled “PacketSwitching Fabric Using the Segmented Ring With Resource ReservationControl.”

FIG. 3B shows a detailed schematic circuit block diagram of analternative embodiment of one of the switching devices 12 of the packetswitching fabric of 10 (FIG. 2). In this embodiment, the packetswitching fabric (FIG. 2) does not include the dedicated systemmanagement device 42 and CPU 52 (FIG. 2), and the system administrationfunctions, mentioned above and further described below, are implementedby a local system administration unit 195 which is connected tocommunicate with the trunk port configuration unit 116 via its port 117.In varying embodiments, the local system administration unit 195 may beimplemented by an EEPROM or by a processing unit.

FIG. 4A shows a generalized block diagram illustrating at 200 thestructure and contents of the packet routing table 134 (FIGS. 3A and 3B)of a particular one of the switching devices 12 of the packet switchingfabric 10 (FIG. 2). In the depicted embodiment, the packet routing table134 includes a plurality of entries 202, each entry including: a MACdestination address field 204 for storing the MAC destination address ofa corresponding one of the packets received by the particular switchingdevice; miscellaneous fields 206 for storing additional packet routinginformation; and a destination port ID field 208 for storing adestination port ID value indicating a destination port of the switchingfabric 10 (FIG. 2) for the corresponding received packet. Thedestination port ID value may indicate one of the trunked ports P₀-P₇(FIG. 1) of the switch 10 (FIG. 1), or a regular non-trunking networkport 14 (FIG. 1) as determined by a destination port ID value codingscheme as further explained below.

The packet routing table 134 is accessed by logic (not shown) of theaddress resolution circuit 136 (FIG. 3A) of the input queuing controlunit 120 (FIG. 3A). Upon receiving a particular packet from one of theeight receive buffer queues 160 (FIGS. 3A and 3B) of the particularswitching device 12, the address resolution circuit 136 provides thedestination MAC address value of the particular packet to the packetrouting table 134 to determine a target entry 202 storing a destinationaddress value matching the destination MAC address value of theparticular packet. The address resolution circuit then reads thedestination port ID value from the destination port field 208 associatedwith the target entry 202 to determine a destination port correspondingwith the particular packet. As mentioned above, the destination port iscommunicatively coupled with a destination node specified by the MACdestination address indicated by the particular packet.

In the depicted embodiment, the destination port ID field 208 of eachentry 202 stores a 6 bit destination port ID value indicating thedestination port for a corresponding packet. In one embodiment of adestination port ID value coding scheme in accordance with the presentinvention, if a first bit field 210 of the destination port ID field 208stores a value of zero, then it is assumed that the indicateddestination port is a regular non-trunking network port 14 (FIG. 1) ofthe switch 10. Alternatively, if a trunk port subfield 212 including thefirst three bits of the destination port ID field 208 stores the value‘100’, then it is assumed that the indicated destination port is one ofthe trunked ports P₀-P₇ (FIG. 1) of the switch.

FIG. 4B shows a block diagram illustrating a format at 216 of a regularnon-trunking destination port ID value including: the first bit 210having the value ‘0’ stored therein to indicate that the destinationport is a regular non-trunking network port 14 (FIG. 1); a device IDfield 220 for storing an N-bit destination device ID value uniquelyidentifying a corresponding destination one of the plurality ofswitching devices 12 (FIG. 2) wherein N is the minimum number of bitsrequired to uniquely identify each of 2^(N) switching devices; and aport ID field 222 for storing an M-bit destination port ID value foruniquely identifying a corresponding destination one of a plurality of Mnetwork ports 14 (FIG. 2) of the destination device, wherein M is theminimum number of bits required to uniquely identify each of 2^(M)network ports of the destination switching device. In the example of theswitching fabric 10 (FIG. 2) which includes four switching devices 12each having network ports 14 (N=2, and M=3), a regular non-trunkingdestination port may be uniquely identified by a two-bit destinationdevice ID value (x,x) stored in device ID field 220, and a three-bitdestination port ID value (y,y,y) stored in port ID field 222.

FIG. 4C shows a block diagram illustrating a format at 224 of adestination trunked port ID value including: the trunk port field 212having the value ‘100’ stored therein to indicate that the destinationport is one of the trunked destination ports P₀-P₇ (FIG. 1); the deviceID field 220 for storing the two-bit destination device ID value (x,x)uniquely identifying a corresponding destination one of the plurality ofswitching devices 12 (FIG. 2); and a trunk identification field 226 forstoring a one-bit destination trunk ID value specifying one of the twotrunked ports of the indicated destination device, the trunked portsbeing coupled to corresponding trunked links 17 (FIG. 1).

FIG. 5 shows a block diagram at 250 illustrating details of the trunkport configuration unit 116 (FIG. 3A) and the address resolution circuit136 (FIG. 3A) of one the switching devices 12 in accordance with a firstembodiment of the present invention wherein the switch 10 (FIG. 1)provides port based load balancing for each of the trunked links 17(FIG. 1). In the depicted embodiment, the trunk port configuration unit116 includes a register bank 251 having a plurality of 8 trunk portconfiguration registers 252, each being associated with a correspondingone of the network input ports 166 (FIGS. 3A and 3B) of the switchingdevice 12 (FIGS. 3A and 3B). Each of the registers 252 include an input254 coupled to receive a port mapping signal carrying a sixteen-bit portmapping value from the CPU 52 (FIG. 1) via port 117 of the TPC unit 116,and an output 256. In the alternative embodiment of the switching device12 (FIG. 3B) of the packet switching fabric of 10 (FIG. 2), the inputs254 of the trunk port configuration registers 252 are coupled to receivethe port mapping signals carrying the sixteen bit port mapping valuesfrom the local system administration unit 180 (FIG. 3B) via port 117 ofthe TPC unit 116.

The address resolution circuit 136 comprises a port based load balancingcircuit 258 including: a source port selection multiplexer 260 having aplurality of (2^(M)=8) inputs 262 each coupled to receive acorresponding one of the port mapping values from output 256 of acorresponding one of the configuration registers 252 of unit 116, anoutput 264, and a control port 268 coupled to receive a three-bit sourceport ID value carried by a source port signal received from the inputqueuing control logic unit 121 (FIG. 3A) of the particular switchingdevice; a destination trunk port register 272 having an input 274coupled to receive selected ones of the port mapping values from output264 of multiplexer 260, and a plurality of (2^(M)=8) outputs 276; and atrunk port selection multiplexer 280 having a plurality of (2^(M)=8)inputs 282 each coupled to receive a two-bit value from a correspondingone of the outputs 276 of register 272, an output 284, and a controlport 286 coupled to receive a trunked port ID signal carrying a threebit trunked port ID value (x,x,t) from the packet routing table 134(FIGS. 3A and 3B) as further explained below.

In the depicted embodiment, the register bank 251 of unit 116 includeseight of the trunk port configuration registers 252, designated TP₀-TP₇,each being associated with a corresponding one of the eight networkports 14 of the particular switching device 12 (FIG. 3A). The sourceport selection multiplexer 260 selects from the outputs 256 of registers252 in response to the source port value received at its control port268 from the input queuing control logic 121 (FIG. 3A). The source portvalue indicates the source port at which a particular packet has beenreceived. Therefore, the multiplexer 260 selects one of the registers252 which corresponds with the source port associated with the receivedpacket. As further described below, the 16-bit port mapping value storedin the selected one of the registers 252 includes eight separate 2-bitport values select each indicating a destination port associated withthe particular packet received at the corresponding source port.

The destination trunk port register 272, further described below, storesthe 16-bit port mapping value received from the selected one of theregisters 252, and in response to the 3-bit trunk port ID value (x, x,t) received from the packet routing table, multiplexer 280 selects oneof the 2-bit values of the 16-bit port mapping value.

FIG. 6 shows a detailed block diagram at 300 of the destination trunkport configuration register 272 of the port based load balancing circuit258 (FIG. 5). The register 272 includes sixteen cells 302 each providingstorage for one binary value. As mentioned above, input 274 of theregister is couple to receive a selected one of the sixteen-bit portmapping values from output 264 of multiplexer 260, wherein the selectedport mapping value for a received packet is determined based on thesource port associated with the received packet. As further explainedbelow, each of the sixteen-bit port mapping values includes eighttwo-bit port select values (z, z) for indicating one of the four networkports 14 of an associated one of the trunked ports P₀-P₇ of the switch10 (FIG. 1).

The register 272 provides for storing eight two-bit port select fields304 designated DTP₀-DTP₇, each field 304 corresponding with one of thetrunked ports P₀-P₇ of the switch 10 (FIG. 1). Each field 304 providesfor storing a two-bit port select value (z, z) for indicating one of thefour network ports 14 of the corresponding one of the trunked portsP₀-P₇ associated with the particular port select field 304. For example,the port select field 304 designated DTP₀ stores a two-bit port selectvalue (z₀, z₀) indicating a destination one of the four network portsA₀-A₄ of the trunked port P₀ of the switch 10 (FIG. 1). Therefore, thesixteen-bit port mapping values, which are provided by the systemadministrator, determine the particular destination port of thecorresponding destination trunked port for each packet based on thesource port associated with the packet. These port mapping values areprogrammed by a user. Therefore, the port based load balancing scheme isstatic in the sense that the port mapping may only be changed byreprogramming the port mapping values stored in the systemadministrator.

FIG. 7 shows a block diagram at 310 of one embodiment of the addressresolution circuit 136 (FIGS. 3A and 3B) in accordance with a source MACaddress based load balancing scheme for trunked links in accordance withthe present invention. In the depicted embodiment, the addressresolution circuit 136 includes a source MAC address code selectioncircuit 312 having a port 313 coupled to receive 48-bit source MACaddress values from the input queuing control logic 121 (FIGS. 3A and3B) via port 139 of the address resolution circuit 136, and an output314 coupled to provide two-bit port select values (z, z) for indicatingselected ones of the four network ports 14 of corresponding ones of thetrunked ports P₀-P₇ of the switch 10 (FIG. 1). Each of the 48-bit sourceMAC address values is associated with a received packet, and the two-bitport select value (z, z) indicates a destination port (for the receivedpacket) of the four network ports 14 of a destination one of the trunkedports P₀-P₇ of the switch 10 (FIG. 1).

The source MAC address code selection circuit 312 includes: a 48-bitregister 315 having an input 316 coupled to receive the 48-bit sourceMAC address values from the input queuing control logic 121 (FIGS. 3Aand 3B) via port 313, and a plurality of outputs 318 each providing acorresponding two-bit source address derived value (derived from thestored source address value) from a corresponding pair of cells of theregister; and a multiplexer 322 having a plurality of inputs 324 coupledto receive corresponding ones of the two-bit source address derivedvalues from corresponding ones of the outputs 318 of register 315, anoutput 326, and a control port 328 coupled to receive a two-bit (N=2)source address bit select signal from dedicated registers (not shown) ofthe trunk port configuration unit 116 (FIGS. 3A and 3B).

FIG. 8 shows a block diagram at 350 of an embodiment of the addressresolution circuit of FIGS. 3A and 3B in accordance with a second MACaddress based load balancing scheme for aggregated links in accordancewith the present invention, wherein destination ports associated with aparticular packet are selected from the trunked network ports coupled toa corresponding destination trunk port based on the source address anddestination address of the particular packet.

In the depicted embodiment, the address resolution circuit 136 includesthe source MAC address code selection circuit 312 (FIG. 7) having itsport 313 coupled to receive the 48-bit source MAC address values fromthe input queuing control logic 121 (FIGS. 3A and 3B) via port 139 ofthe address resolution circuit 136, and its output 314 coupled toprovide a two-bit port select value (z, z) for indicating one of thefour network ports 14 of a corresponding one of the trunked ports P₀-P₇of the switch 10 (FIG. 1).

In the depicted embodiment, the address resolution circuit 136additionally includes a 48-bit destination address register 360 havingan input 362 coupled to receive the 48-bit destination MAC addressvalues from the input queuing control logic 121 (FIGS. 3A and 3B) viaport 139 of the address resolution circuit 136, and a plurality ofoutputs 366 each providing a corresponding two-bit value from acorresponding pair of cells of the register 360; a multiplexer 370having a plurality of inputs 372 coupled to receive corresponding onesof the two-bit values from corresponding ones of the outputs 366 ofregister 360, an output 374, and a control port 376 coupled to receive atwo-bit destination address bit select signal from dedicated registers(not shown) of the trunk port configuration unit 116 (FIGS. 3A and 3B);and an exclusive-OR logic unit 380 having a first input 382 coupled toreceive a two-bit destination address value DA_(zz) from output 374 ofmultiplexer 370, and a second input 384 coupled to receive a two-bitsource address value SA_(zz) from output 314 of the source MAC addresscode selection circuit 312.

Table 1, below, provides a truth table illustrating the function of theexclusive-NOR logic unit 380.

TABLE 1 MAC-Address-Table Based Load Balancing Truth Table DAzz SAzz zz00 00 11 00 01 10 00 10 01 00 11 00 01 00 10 01 01 11 01 10 00 01 11 0110 00 01 10 01 00 10 10 11 10 11 10 11 00 00 11 01 10 11 10 10 11 11 11

Although the present invention has been particularly shown and describedabove with reference to a specific embodiment, it is anticipated thatalterations and modifications thereof will no doubt become apparent tothose skilled in the art. It is therefore intended that the followingclaims be interpreted as covering all such alterations and modificationsas fall within the true spirit and scope of the invention.

What is claimed is:
 1. A communications device, comprising: a pluralityof network ports, said plurality of network ports including a trunkgroup formed of a subset of the plurality of network ports, said trunkgroup communicating with aggregated network links; a packet routing unitconnected to said plurality of network ports, said packet routing unitreceiving a packet received at a source port of said plurality ofnetwork ports, said packet including a source address value indicating asource address, and a destination address value indicating a destinationaddress, said packet routing unit determining said trunk group as adestination port; and a load balancing unit in communication with thepacket routing unit, said load balancing unit selecting the destinationport from the subset of network ports in the trunk group, saiddestination port being determined as a function of at least one value ofa source port ID value corresponding to a source port for the packet,the source address value, and the destination address value, whereinsaid load balancing unit balances a distribution of packets among thesubset of network ports of the trunk group, wherein said packet routingunit includes a packet routing table which generates a trunked port IDvalue based upon the at least one value of the source address value, thedestination address value, and the source port ID, wherein said loadbalancing unit comprises, a systems administration unit providing aplurality of port mapping values, each port mapping value beingassociated with a corresponding one of the plurality of network ports,each port mapping value including a plurality of port select values,each port select value being associated with a corresponding one of aplurality of trunked ports of a switch, each of the plurality of trunkedports including a corresponding subset of the plurality of networkports, each of the port select values indicating a correspondingselected one of the corresponding subset of the network ports of thetrunk group, a trunk port configuration unit coupled to receive saidport mapping values from said system administration unit, said trunkport configuration unit including a plurality of configuration registersfor storing corresponding ones of the port mapping values, and anaddress resolution unit connected to said trunk port configuration unit.2. A communications device as recited in claim 1, wherein said addressresolution unit comprises: a first multiplexer having a plurality ofinputs for receiving corresponding ones of said port mapping values, acontrol port responsive to said at least one value of said sourceaddress value, said destination address value, and said source port IDvalue, and an output providing a selected one of said port mappingvalues in response to said value being applied to said control port ofsaid first multiplexer, a destination register coupled to said firstmultiplexer for storing said selected port mapping value, and having aplurality of outputs each providing a corresponding one of said portselect values, and a second multiplexer having a plurality of inputscoupled to said outputs of said destination register, a control portresponsive to said trunked port ID value, and an output providing aselected one of said plurality of port select values in response to saidtrunked port ID value being applied to said control port of said secondmultiplexer, said selected port select value indicating said destinationport.
 3. A communications device as recited in claim 1, wherein saidsystem administration unit comprises a processing unit and a memory, andwherein said port mapping values are programmable.
 4. A communicationsdevice, comprising: a plurality of network ports, said plurality ofnetwork ports including a trunk group formed of a subset of theplurality of network ports, said trunk group communicating withaggregated network links; a packet routing unit connected to saidplurality of network ports, said packet routing unit receiving a packetreceived at a source port of said plurality of network ports, saidpacket including a source address value indicating a source address, anda destination address value indicating a destination address, saidpacket routing unit determining said trunk group as a destination port;and a load balancing unit in communication with the packet routing unit,said load balancing unit selecting the destination port from the subsetof network ports in the trunk group, said destination port beingdetermined as a function of at least one value of a source port ID valuecorresponding to a source port for the packet, the source address value,and the destination address value, wherein said load balancing unitbalances a distribution of packets among the subset of network ports ofthe trunk group, and wherein said load balancing unit comprises, aregister for storing at least one value of the packet, the registerincluding at least one register output, said at least one registeroutput providing a port select value derived from the at least onevalue, the port select value for indicating a selected one of aplurality of network ports of a destination trunked port for the packet,and the communication device further comprising a multiplexer having aplurality of inputs for receiving a corresponding one of the port selectvalues, a control port responsive to a predefined bit select value, andan output providing a selected one of said port select values.
 5. Acommunications device, comprising: a plurality of network ports, saidplurality of network ports including a trunk group formed of a subset ofthe plurality of network ports, said trunk group communicating withaggregated network links; a packet routing unit connected to saidplurality of network ports, said packet routing unit receiving a packetreceived at a source port of said plurality of network ports, saidpacket including a source address value indicating a source address, anda destination address value indicating a destination address, saidpacket routing unit determining said trunk group as a destination port;and a load balancing unit in communication with the packet routing unit,said load balancing unit selecting the destination port from the subsetof network ports in the trunk group, said destination port beingdetermined as a function of at least one value of a source port ID valuecorresponding to a source port for the packet, the source address value,and the destination address value, wherein said load balancing unitbalances a distribution of packets among the subset of network ports ofthe trunk group, and wherein said load balancing unit comprises, a firstregister for storing the source address value of the packet, said firstregister including at least one output providing a corresponding firstvalue derived from said source address value, a second register forstoring the destination address value of the packet, said secondregister including at least one output providing a second value derivedfrom said destination address value, and an exclusive NOR logic unitresponsive to said first and second values, said exclusive NOR logicunit providing a port select value for indicating a selected one of theplurality of network ports of the trunk group.